/**
 * 
 */
package org.hotpotmaterial.codegenn2.service;

import java.io.File;
import java.util.List;
import java.util.Map;

import org.hotpotmaterial.codegenn2.entity.ProjectPlugin;
import org.hotpotmaterial.codegenn2.entity.ProjectPluginProperty;

/**
 * @author causer
 *
 */
public interface IProjectPluginService {
	
	/**
	 * 所有项目插件
	 * @param searchDTO
	 * @return
	 */
	public List<ProjectPlugin> findProjectPlugins(Long projectModuleId);
	
	/**
	 * 创建项目插件
	 * @param record
	 * @return
	 */
	public int insertProjectPlugin(ProjectPlugin record);
	
	/**
	 * 项目插件详情
	 * @param id
	 * @return
	 */
	public ProjectPlugin findById(Long id);
	
	/**
	 * 更新项目插件
	 * @param record
	 * @return
	 */
	public int updateProjectPlugin(Long id, ProjectPlugin record);
	
	/**
	 * 停用项目插件
	 * @param id
	 * @return
	 */
	public int delProjectPlugin(Long id);
	
	/**
	 * 获取生成文件内容
	 * @param id
	 * @param fileName
	 * @return
	 */
	public String getFileContent(String fileName);
	
	/**
	 * 生成文件树
	 * @param id
	 * @return
	 */
	public String generateFileTree(Long id, Map<String, String> password);
	
	/**
	 * 获取目录下文件
	 * @param dir
	 * @return
	 */
	public List<String> getFileList(String dir);
	
	/**
	 * 确定文件是否为目录
	 * @param dir
	 * @return
	 */
	public String isDirectory(String dir);
	
	/**
	 * 获取项目插件属性列表
	 * @param id
	 * @return
	 */
	public List<ProjectPluginProperty> getProjectPluginProperties(Long id);
	
	/**
	 * 保存项目插件属性列表
	 * @param id
	 * @return
	 */
	public int saveProjectPluginProperties(Long id, List<ProjectPluginProperty> properties);
	
	/**
	 * 下载文件
	 * @param fileName
	 * @return
	 */
	public byte[] downloadFile(String fileName);
	
	/**
	 * 下载全部文件zip
	 * @param outpath
	 * @return
	 */
	public File downloadZip(String outpath);

}
